import java.util.Arrays;

//算法题：除自身以为数组的乘积；
//实例1；
//输入：nums = [1,2,3,4]
//输出: [24,12,8,6]
//解法：
//前缀积乘以后缀积进行解决上述问题；
public class Nm2 {
    public static int[] fun(int[] nums){
        //1.进行相关变量的设置；
        int n= nums.length;
        int f[]=new int[n];//前缀数组的设定；
        int g[]=new int[n];//后缀数组的设定；
        f[0]=g[n-1]=1;//数组边界值的设定
        //2.进行前缀积数组的预处理；
        for(int i=1;i<n;i++){
            f[i]= f[i-1]*nums[i-1];
        }
        //3.进行后缀积数组的预处理；
        for(int i=n-2;i>=0;i--){
            g[i]=g[i+1]*nums[i+1];
        }
        //4，进行前缀积和后缀积的使用；
        int[] ret=new int[n];//结果返回所需的数组设定；
         for(int i=0;i<n;i++){
             ret[i]=f[i]*g[i];
        }
        return ret;
    }
    public static void main(String[] args){
        int[] nums={1,2,3,4};
        int[] ret=fun(nums);
        System.out.println(Arrays.toString(ret));
    }
}
